class Solution {
public:
    unordered_map<char, char> map = {{')', '('}, {']', '['}, {'}', '{'}};
    bool isValid(string s) {
        //首先设定好满足条件的括号组有哪些，将其放到map中设定好，
        //然后需要使用到一个栈，如果遇到了(,{,[就入栈，而遇到了}，),]就判断栈顶的元素是否是和这个符号相对应得括号
        //是就出栈
        stack<char> st;

        for(int i = 0;i<s.size();i++)
        {
            if(s[i] == '('||s[i]=='{'||s[i] =='[')
            {
                st.push(s[i]);
            }
            else
            {
                if(!st.empty()&&st.top() == map[s[i]])
                {
                    st.pop();
                }
                else
                {
                    return false;
                }
            }
        }
        return st.empty();
    }
};